package com.vxdata.utils.modules.utils.equipment;

/**
 * Gps 范围工具
 */
public class GeoUtils {

    /**
     *
     * @Description   计算给定经纬度附近相应公里数的经纬度范围(正方形范围)
     * @param         longitude 经度
     * @param         latitude 纬度
     * @param         distince 距离（千米）
     * @return        String 格式：经度最小值-经度最大值-纬度最小值-纬度最大值
     * @Data          2018.10.26
     **/
    public static double[] getNearbyByLongitudeAndLatitudeAndDistince(Double longitude, Double latitude, Double distince) {
        // 地球半径千米
        double r = 6371.393;
        double lng = longitude;
        double lat = latitude;
        double dlng = 2 * Math.asin(Math.sin(distince / (2 * r)) / Math.cos(lat * Math.PI / 180));
        // 角度转为弧度
        dlng = dlng * 180 / Math.PI;
        double dlat = distince / r;
        dlat = dlat * 180 / Math.PI;
        double minlat = lat - dlat;
        double maxlat = lat + dlat;
        double minlng = lng - dlng;
        double maxlng = lng + dlng;

        double[] arr = new double[4];
        arr[0] = minlng;
        arr[1] = maxlng;
        arr[2] = minlat;
        arr[3] = maxlat;
        return arr;
    }
}
